<?php

// $Id$

require_once($WSC->get_site_inc_dir().'modules/tangra_cms/_sys/tcms_admin_web_page_wed_ua.class.php');
require_once($WSC->get_site_inc_dir().'modules/tangra_cms/classes/ci/tcms_ci_type_attr_dbc.class.php');
require_once($WSC->get_site_inc_dir().'modules/tangra_cms/classes/ci/tcms_ci_type_attr_deleter.class.php');



class CI_Type_Attr_Del_WP extends TCMS_Admin_Web_Page_WED_UA {
	public function create_view($name = 'default') {
		$ret = new TCMS_Admin_Page_View($this, $name, 'modules/tangra_cms/pages/_ci/');

		return $ret;
	}


	public function init() {
		parent::init();

		$v = $this->create_view();
		$this->add_view($v);

		$v2 = $this->create_view('not_exist');
		$this->add_view($v2);

		$this->wed->add_wed_event_action_pair(new Web_Event_Simple_Int('delete', Tangra_Parameter_Method::GET, 'del'), 'delete_event');
		$this->wed->add_wed_event_action_pair(new Web_Event_Simple_Int('delete_confirmed', Tangra_Parameter_Method::GET, 'del_confirmed'), 'delete_confirmed');
	}


	protected function delete_event($ci_type_attr_id) {
		$dbc = $this->get_dbc();

		$context = $this->get__context();
		if (!$context->exists_in_get('ci_type')) {
			throw new Tangra_Module_Exception('Expecting "ci_type" parameter');
		}
		$ci_type_id = $context->get_from_get('ci_type');
		$this->export('ci_type_id', $ci_type_id);

		$ci_type_attr = new TCMS_CI_Type_Attr_DBC();
		if ($ci_type_attr->load_by_id($dbc, $ci_type_attr_id)) {
			$this->export('ci_type_attr', $ci_type_attr);

			$ciat = new TCMS_CI_Attr_Type_DBC();
			if (!$ciat->load_by_id($dbc, $ci_type_attr->get_attr_type())) {
				throw new Tangra_Module_Exception('Cannot load TCMS_CI_Attr_Type_DBC with id = '.$ci_type_attr->get_attr_type());
			}

			$class_name = $ciat->get_class_name();
			if (!class_exists($class_name)) {
				require_once($this->_config->get_hidden_dir().'inc/'.$ciat->get_class_path());
			}
			$cia = new $class_name();

			$values_count = $cia->count_all_for_ci_type_attr($dbc, $ci_type_attr_id);
			$this->export('values_count', $values_count);

			$view = $this->get_view('default');
		} else {
			$view = $this->get_view('not_exist');
		}

		return $view;
	}


	protected function delete_confirmed($ci_type_attr_id) {
		$context = $this->get__context();
		if (!$context->exists_in_get('ci_type')) {
			throw new Tangra_Module_Exception('Expecting "ci_type" parameter');
		}
		$ci_type_id = $context->get_from_get('ci_type');

		$dbc = $this->get_dbc();
		try {
			$dbc->start_trans();
			TCMS_CI_Type_Attr_Deleter::delete($dbc, $ci_type_attr_id, $this->_config->get_hidden_dir().'inc/', $this->get_user()->get_id());
			$dbc->complete_trans();
		} catch (Exception $e) {
			$dbc->fail_trans();
			$dbc->complete_trans();
			throw $e;
		}

		$redir = $this->create_redirect_view('admin/modules/tangra_cms/ci/ci_type_manage.php', array('manage' => $ci_type_id));

		return $redir;
	}


	protected function default_event() {
		throw new Tangra_Module_Exception('Expecting "del" parameter.');
	}
}